package com.gang.ssm.bos.system.service.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletOutputStream;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.gang.ssm.bos.common.Page;
import com.gang.ssm.bos.system.bean.Region;
import com.gang.ssm.bos.system.bean.Subarea;
import com.gang.ssm.bos.system.bean.SubareaExample;
import com.gang.ssm.bos.system.bean.SubareaExample.Criteria;
import com.gang.ssm.bos.system.mapper.SubareaMapper;
import com.gang.ssm.bos.system.service.SubareaService;

@Service
public class SubareaServiceImpl implements SubareaService{
	
	@Autowired
	private SubareaMapper subareaMapper;

	@Override
	public void pageQuery(Page<Subarea> pageBean) {
		int total = (int) subareaMapper.countByExample(null);
		List<Subarea> regions = subareaMapper.findByLimit((pageBean.getPageNo() - 1) * 
				pageBean.getPageSize(),pageBean.getPageSize());
		
		pageBean.setTotalCount(total);
		pageBean.setResult(regions);
	}

	@Override
	public void bathSave(List<Subarea> subareas) {
		subareaMapper.bathInsert(subareas);
	}

	
	public void save(Subarea subarea) {
		subareaMapper.insertSelective(subarea);
	}

	@Override
	public void deleteByIds(String ids) {
		List<Integer> idList = new ArrayList<Integer>();
		for(String id : ids.split(",")) {
			idList.add(Integer.valueOf(id));
		}
		SubareaExample subareaExample = new SubareaExample();
		Criteria criteria = subareaExample.createCriteria();
		criteria.andIdIn(idList);
		subareaMapper.deleteByExample(subareaExample);
	}

	@Override
	public void export(ServletOutputStream out) {
			
		List<Subarea> list = subareaMapper.findAllWithRegion(); 
		HSSFWorkbook workbook = new HSSFWorkbook();
		HSSFSheet sheet = workbook.createSheet("分区数据");
		HSSFRow headRow = sheet.createRow(0);
		headRow.createCell(0).setCellValue("分区编号");
		headRow.createCell(1).setCellValue("区域编号");
		headRow.createCell(2).setCellValue("地址关键字");
		headRow.createCell(3).setCellValue("省");
		headRow.createCell(4).setCellValue("市");
		headRow.createCell(5).setCellValue("区");

		for (Subarea subarea : list) {
			Region region = subarea.getRegion();
			HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
			dataRow.createCell(0).setCellValue(subarea.getId());
			dataRow.createCell(1).setCellValue(region.getId());
			dataRow.createCell(2).setCellValue(subarea.getAddresskey());
			dataRow.createCell(3).setCellValue(region.getProvince());
			dataRow.createCell(4).setCellValue(region.getCity());
			dataRow.createCell(5).setCellValue(region.getDistrict());
		
		}
		try {
			workbook.write(out);
			out.flush();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	@Override
	public List<Subarea> findDecidedzoneIdIsNull() {
		SubareaExample subareaExample = new SubareaExample();
		Criteria criteria = subareaExample.createCriteria();
		criteria.andDecidedzoneIdIsNull();
		return subareaMapper.selectByExample(subareaExample);
	}

	@Override
	public List<Integer> findByDecidedzoneId(Integer decidedzoneId) {
		return subareaMapper.findByDecidedzoneId(decidedzoneId);
	}

	@Override
	public Subarea findById(Integer id) {
		return subareaMapper.selectByPrimaryKey(id);
	}

	@Override
	public void saveOrUpdate(Subarea subarea) {
		if(subarea.getId() != null) {
			subareaMapper.updateByPrimaryKeySelective(subarea);
		}else{
			subareaMapper.insertSelective(subarea);
		}
	}

	@Override
	public void deleteById(Integer id) {
		subareaMapper.deleteByPrimaryKey(id);
	} 
}
